class ListNode:
    def __init__(self, data):
        self.val = data  # 链表的数据域
        self.next = None  # 链表的指针域


# 从链表节点尾部添加节点
def insert_node(node, value):
    if node is None:
        return
    # 创建一个新节点
    new_node = ListNode(value)
    cur = node
    while cur.next is not None:
        cur = cur.next  # 移动指针变量
    # 末尾节点的next指针域连接新节点
    cur.next = new_node


# 打印链表（从链表头结点开始打印链表的值）
def print_node(node):
    cur = node
    # 遍历每一个节点
    while cur is not None:
        print(cur.val, end="\t")
        cur = cur.next  # 移动指针变量
    print()


if __name__ == '__main__':
    head = ListNode(1)
    head.next = ListNode(123)  # 更改指针域（方法：变量（指针）名.Next=新节点）
    head.next.next = ListNode(456)  # 更改指针域（方法：变量（指针）名.Next=新节点）
    head.next.next.next = ListNode(789)

    tmp = head  # 指针变量赋值
    tmp = tmp.next  # 移动指针变量
    tmp.next = None  # 通过tmp指针变量更改节点的指针域:截断链表（tmp为：地址引用。与head指向相同的地址，操作同一份数据）
    tmp.next = ListNode(100)  # 通过tmp指针变量更改节点的指针域：增加节点
    head.next.next = None  # 通过head指针变量操作链表的指针域：截断链表

    print("********************************************************************")
    root = ListNode(10)
    insert_node(root, 30)
    insert_node(root, 40)
    insert_node(root, 50)
    insert_node(root, 60)
    insert_node(root, 70)

    print("********************************************************************")
    print_node(root)
    print()
